#ifndef USR_INC_H
#define USR_INC_H

/*-----------------------------------------------------------
 * 头文件
 *----------------------------------------------------------*/
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

#include "main.h"
#include "tim.h"

#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "semphr.h"
#include "cmsis_os2.h"

#include "drv_bsp_uart.h"
#include "drv_pid.h"
#include "drv_dji.h"

#include "toss.h"
#include "dribble.h"

/*-----------------------------------------------------------
 * RTOS句柄
 *----------------------------------------------------------*/
extern osMessageQueueId_t pidArgsQueueHandle;

extern osMessageQueueId_t dji4InfoBoxHandle;

extern osMutexId_t djiMutexHandle;

extern osMessageQueueId_t dribbleCmdQueueHandle;

extern osMessageQueueId_t dji3InfoBoxHandle;

extern osMessageQueueId_t tossCmdQueueHandle;

extern osMessageQueueId_t tossStrokeQueueHandle;

/*-----------------------------------------------------------
 * 初始化函数
 *----------------------------------------------------------*/
/**
 * @brief 初始化所有推射相关的实例
 */
void ALL_TOSS_Init(void);

/**
 * @brief 初始化所有运球相关的实例
 */
void ALL_DRIBBLE_Init(void);

/**
 * @brief 初始化所有串口接收体实例
 */
void ALL_BSP_UART_Init(void);

/**
 * @brief 初始化所有CAN控制器
 */
void ALL_BSP_CAN_Init(void);

#endif //USR_INC_H
